package com.glsc.ngateway.oaflow.controller;

import com.glsc.ngateway.oaflow.service.SwitchDataSourceService;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class FlowControllerAspect {

    @Autowired
    private SwitchDataSourceService switchDataSourceService;

    // 定义一个切入点，匹配FlowController类中的所有方法
    @Pointcut("execution(* com.glsc.ngateway.oaflow.controller.FlowController.*(..))")
    public void flowControllerMethods() {
    }

    // 在切入点之前执行的方法
    @Before("flowControllerMethods()")
    public void switchDataSourceBeforeFlowControllerMethods(JoinPoint joinPoint) {
        // 从某个地方获取数据源键，这里只是一个示例，实际实现可能不同
        // 例如，你可以从请求上下文、线程本地变量、方法参数等获取
//        String dataSourceKey = "exampleDataSourceKey"; // 需要替换为实际的获取逻辑

        // 调用SwitchDataSourceService的switchSource方法来切换数据源
        //读取现在用了那个数据源，需要进行切换
        switchDataSourceService.switchSource();

        // 你可以在这里添加日志记录或其他需要的逻辑
//        System.out.println("Switched to data source: " + dataSourceKey);
    }
}
